// ripasso_strutture.cpp : Defines the entry point for the console application.
//
/*
inserimento alunno v
visualizza tutto v
fornito in input il nome di un alunno visualizzare i dati v
fornito in input il nome di un alunno inserire i voti
dato il cognome di un alunno stampare il nome e la sua media
stampa dei promossi e dei bocciati
promossi media>=6 bocciati media<=6
*/
#include "stdafx.h"
#include <iostream>
#include <string.h>
#define LEN 20
#define NAL 22

typedef struct {
	char nome[LEN + 1];
	char cognome[LEN + 1];
	int età;
	int voti[10];
	float media;
	bool valutazione;
	bool posto;
} ALUNNO;

void stampa(ALUNNO studenti[NAL]);
void leggi(ALUNNO *studenti[NAL], int *pos);
void visualizza_dati(ALUNNO studenti[NAL], char nome[LEN + 1]);
void inserire_dati(ALUNNO *studenti[NAL], char nome[LEN + 1]);
void visualizzare_media(ALUNNO studenti[NAL], char cognome[LEN + 1]);
void promossi_bocciati(ALUNNO studenti[NAL]);
void menù();



int main()
{

	menù();
	system("pause");
    return 0;
}
void menù() {
	ALUNNO Studenti[NAL];
	int posizione;
	bool posizone = false;
	char nome1[LEN + 1];
	char nome[LEN+1];
	char cognome[LEN + 1];
	int scelta = 0;
	do {
		system("cls");
		printf("0.esci\n");
		printf("1.inserimento alunno\n");
		printf("2. visualizza tutto \n");
		printf("3.fornito in input il nome di un alunno visualizzare i dati  \n");
		printf("4.fornito in input il nome di un alunno inserire i voti\n");
		printf("5.dato il cognome di un alunno stampare il nome e la sua media\n");
		printf("6.stampa dei promossi e dei bocciati\n");
		scanf_s("%d", &scelta, sizeof(int));
		switch (scelta) {
		case 0:
			printf("arrivederci e lasciate la mancia\n");
			system("pause");
			break;
		case 1:
			do {
				printf("inserire la posizione dell'alunno\n");
				scanf_s("%d", &posizione, sizeof(int));
				if (Studenti[posizione].posto == true) {
					posizione = true;
				}
			} while (posizione == false);
			leggi(Studenti, &posizione);
			break;
		case 2:
			stampa(Studenti);
			break;
		case 3:
			printf("inserire il nome\n");
			scanf_s("%s", nome, LEN);
			visualizza_dati(Studenti, nome);
			break;
		case 4:
			printf("inserire il nome\n");
			scanf_s("%s", nome1, LEN);
			inserire_dati(Studenti, nome);
			break;
		case 5:
			printf("inserire il cognome\n");
			scanf_s("%s", cognome, LEN);
			visualizzare_media(Studenti, cognome);
			break;
		case 6:
			promossi_bocciati(Studenti);
			break;
		default:
			printf("valore non valido\n");
			break;
		}

	} while (scelta != 0);
}

void promossi_bocciati(ALUNNO studenti[NAL]) {
	
	for (int i = 0; i < NAL; i++) {
		if (studenti[i].valutazione == true) {
			printf("lo studente %s è stato ammesso all'anno succesivo \n", studenti[i].cognome);
		
		}
		if (studenti[i].valutazione == false) {
			printf("lo studente %s  non è stato ammesso all'anno succesivo \n", studenti[i].cognome);
		}
	}


}

void visualizzare_media(ALUNNO studenti[NAL], char cognome[LEN + 1]) {
	int pos = 0;
	for (int i = 0; i < NAL; i++) {
		if (strcmp(studenti[i].cognome,cognome) == 0) {
			pos = i;
			break;
		}
	}
	printf(" %s", studenti[pos].nome);
	printf("%fl", studenti[pos].media);
		
}

void inserire_dati(ALUNNO *studenti[NAL], char nome[LEN + 1]) {
	int pos = 0;
	int somma = 0;
	for (int i = 0; i < NAL; i++) {
		if (strcmp(studenti[i]->nome, nome) == 0) {
			pos = i;
			break;
		}
	}
	for (int i = 0; i < 10 i++) {
		printf("inserire voto\n");
		scanf_s("%d", studenti[pos]->voti[i]);
		somma += studenti[pos]->voti[i];
	}
	studenti[pos]->media = somma / 10;
	if (studenti[pos]->media >= 6) {
		studenti[pos]->valutazione = true;
	}
	else {
		studenti[pos]->valutazione = false;
	}
}

void visualizza_dati(ALUNNO studenti[NAL], char nome[LEN + 1]) {
	int pos = 0;
	for (int i = 0; i < NAL; i++) {
		if (strcmp(studenti[i].nome, nome) == 0) {
			pos = i;
			break;
		}
	}
	printf("%s\n", studenti[pos].cognome);
	printf("%s\n", studenti[pos].nome);
	printf("%d\n", studenti[pos].età);
	for (int j = 0; j < 10; j++) {
		printf("%d\n", studenti[pos].voti[j]);
	}
	printf("%fl\n", studenti[pos].media);
}

void stampa(ALUNNO studenti[NAL]) {
	for (int i = 0; i < NAL; i++) {
		printf("%s\n", studenti[i].cognome);
		printf("%s\n", studenti[i].nome);
		printf("%d\n", studenti[i].età);
		for (int j = 0; j < 10; j++) {
			printf("%d\n", studenti[i].voti[j]);
		}
		printf("%fl\n", studenti[i].media);
	}
}

void leggi(ALUNNO *studenti[NAL], int *pos) {
	int numero_voti = 0;
	printf("inserire il nome dell'alunno\n");
	scanf_s("%s", studenti[*pos]->nome, LEN + 1);
	printf("inserire il cognome dell'alunno\n");
	scanf_s("%s", studenti[*pos]->cognome, LEN + 1);
	printf("inserire la data di nascita dell'alunno\n");
	scanf_s("%d", studenti[*pos]->età,sizeof(int));
	studenti[*pos]->posto = true;

	

}

